package bo;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;

import dao.ProdutoDAO;
import exception.DataException;
import exception.DatabaseConnectException;
import exception.EmptyResultException;

public class Produto {

	private Integer id;
	private String dsProduto;
	private Float peso;
	private String caminhoFoto;
	private String dsObservacao;
	private Integer idEstoque;
	private String cdBarra;
	private Date dtCadastro;
	private Date dtAtualizacao;
	private Float valorVenda;
	private Float valorCompra;
	private Integer idFornecedor;

	private ProdutoDAO produtoDAO;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getDsProduto() {
		return dsProduto;
	}

	public void setDs_produto(String ds_produto) {
		this.dsProduto = ds_produto;
	}

	public Float getPeso() {
		return peso;
	}

	public void setPeso(Float peso) {
		this.peso = peso;
	}

	public String getCaminhoFoto() {
		return caminhoFoto;
	}

	public void setCaminho_foto(String caminho_foto) {
		this.caminhoFoto = caminho_foto;
	}

	public String getObservacao() {
		return dsObservacao;
	}

	public void setObservacao(String observacao) {
		this.dsObservacao = observacao;
	}

	public Integer getIdEstoque() {
		return idEstoque;
	}

	public void setId_estoque(Integer id_estoque) {
		this.idEstoque = id_estoque;
	}

	public String getCdBarra() {
		return cdBarra;
	}

	public void setCd_barra(String cd_barra) {
		this.cdBarra = cd_barra;
	}

	public Date getDt_cadastro() {
		return dtCadastro;
	}

	public void setDt_cadastro(Date dt_cadastro) {
		this.dtCadastro = dt_cadastro;
	}

	public Date getDt_atualizacao() {
		return dtAtualizacao;
	}

	public void setDt_atualizacao(Date dt_atualizacao) {
		this.dtAtualizacao = dt_atualizacao;
	}

	public Float getValorVenda() {
		return valorVenda;
	}

	public void setValor_venda(Float valor_venda) {
		this.valorVenda = valor_venda;

	}

	public Integer getIdFornecedor() {
		return idFornecedor;
	}

	public void setId_fornecedor(Integer id_fornecedor) {
		this.idFornecedor = id_fornecedor;
	}

	public Float getValorCompra() {
		return valorCompra;
	}

	public void setValor_compra(Float valor_compra) {
		this.valorCompra = valor_compra;
	}

	public void incluir(Produto produto) throws DataException, SQLException, DatabaseConnectException {
		produtoDAO = new ProdutoDAO();

		produtoDAO.incluir(produto);

	}

	public void alterar(Produto produto) throws DataException, SQLException, DatabaseConnectException {
		produtoDAO = new ProdutoDAO();
		
		produtoDAO.alterar(produto);

	}

	public void excluir(Integer id) throws DataException, SQLException, DatabaseConnectException {
		produtoDAO = new ProdutoDAO();
		
		produtoDAO.excluir(id);

	}
	
	public ArrayList<Produto> consultaTodosRegistros() throws DatabaseConnectException, DataException, EmptyResultException, SQLException {
		produtoDAO = new ProdutoDAO();
		
		return produtoDAO.consultaTodosRegistros();		
		
	}

	public ArrayList<Produto> consultaPorId(Integer id) throws DataException,
			EmptyResultException, DatabaseConnectException, SQLException {
		produtoDAO = new ProdutoDAO();
		
		if (id == 0)
			return produtoDAO.consultaTodosRegistros();		
		
		return produtoDAO.consultaPorId(id);

	}

	public ArrayList<Produto> consultaPorDescricao(String descricao)
			throws DataException, EmptyResultException,
			DatabaseConnectException, SQLException {
		produtoDAO = new ProdutoDAO();

		return produtoDAO.consultaPorDescricao(descricao);

	}

	public ArrayList<Produto> consultaPorFornecedor(String fornecedor)
			throws DataException, EmptyResultException,
			DatabaseConnectException, SQLException {
		produtoDAO = new ProdutoDAO();

		return produtoDAO.consultaPorFornecedor(fornecedor);

	}
}
